/* 
 * Copyright 2013-2020 Modeliosoft
 * 
 * This file is part of Modelio.
 * 
 * Modelio is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * Modelio is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Modelio.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2015.12.02 at 02:29:48 PM CET
//
package org.modelio.bpmnxml.model;

import java.util.ArrayList;
import java.util.List;
import com.modeliosoft.modelio.javadesigner.annotations.objid;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;

/**
 * <p>Java class for tMultiInstanceLoopCharacteristics complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="tMultiInstanceLoopCharacteristics">
 * &lt;complexContent>
 * &lt;extension base="{http://www.omg.org/spec/BPMN/20100524/MODEL}tLoopCharacteristics">
 * &lt;sequence>
 * &lt;element name="loopCardinality" type="{http://www.omg.org/spec/BPMN/20100524/MODEL}tExpression" minOccurs="0"/>
 * &lt;element name="loopDataInputRef" type="{http://www.w3.org/2001/XMLSchema}QName" minOccurs="0"/>
 * &lt;element name="loopDataOutputRef" type="{http://www.w3.org/2001/XMLSchema}QName" minOccurs="0"/>
 * &lt;element name="inputDataItem" type="{http://www.omg.org/spec/BPMN/20100524/MODEL}tDataInput" minOccurs="0"/>
 * &lt;element name="outputDataItem" type="{http://www.omg.org/spec/BPMN/20100524/MODEL}tDataOutput" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}complexBehaviorDefinition" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element name="completionCondition" type="{http://www.omg.org/spec/BPMN/20100524/MODEL}tExpression" minOccurs="0"/>
 * &lt;/sequence>
 * &lt;attribute name="isSequential" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 * &lt;attribute name="behavior" type="{http://www.omg.org/spec/BPMN/20100524/MODEL}tMultiInstanceFlowCondition" default="All" />
 * &lt;attribute name="oneBehaviorEventRef" type="{http://www.w3.org/2001/XMLSchema}QName" />
 * &lt;attribute name="noneBehaviorEventRef" type="{http://www.w3.org/2001/XMLSchema}QName" />
 * &lt;anyAttribute processContents='lax' namespace='##other'/>
 * &lt;/extension>
 * &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 */
@objid ("51a01413-b878-4d75-b222-8bd80fb5fe5e")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "tMultiInstanceLoopCharacteristics", propOrder = {
    "loopCardinality",
    "loopDataInputRef",
    "loopDataOutputRef",
    "inputDataItem",
    "outputDataItem",
    "complexBehaviorDefinition",
    "completionCondition"
})
public class TMultiInstanceLoopCharacteristics extends TLoopCharacteristics {
    @objid ("ba45f690-8e95-4383-974f-fb1c28aaa260")
    @XmlAttribute(name = "isSequential")
    protected Boolean isSequential;

    @objid ("4c40a6fc-41dc-4fa8-a5c1-2f74cb3c6838")
    @XmlAttribute(name = "behavior")
    protected TMultiInstanceFlowCondition behavior;

    @objid ("a90aee96-1aa8-4e35-8c04-211ec1b28f60")
    protected TExpression loopCardinality;

    @objid ("8079a181-b772-49cf-9aec-ecfb8f1a6d65")
    protected QName loopDataInputRef;

    @objid ("6947a475-9913-4499-a657-eaad61d2706e")
    protected QName loopDataOutputRef;

    @objid ("110924f4-6e05-43e3-b531-137b1b9e44f6")
    protected TDataInput inputDataItem;

    @objid ("efcd8587-981d-497e-aa8f-a0f52a570003")
    protected TDataOutput outputDataItem;

    @objid ("b97ca59d-832b-4de9-bdd2-643f9fc97fed")
    protected List<TComplexBehaviorDefinition> complexBehaviorDefinition;

    @objid ("38fc7f0a-e951-4225-9d5d-1437fa576d43")
    protected TExpression completionCondition;

    @objid ("21f33246-e4e3-4e0f-a16b-911c55ba4191")
    @XmlAttribute(name = "oneBehaviorEventRef")
    protected QName oneBehaviorEventRef;

    @objid ("55d4f62d-6238-4533-b310-b15af1753ad1")
    @XmlAttribute(name = "noneBehaviorEventRef")
    protected QName noneBehaviorEventRef;

    /**
     * Gets the value of the loopCardinality property.
     * @return
     * possible object is
     * {@link TExpression }
     */
    @objid ("d2a8b200-82d6-411a-9378-bd4cf745ad2b")
    public TExpression getLoopCardinality() {
        return this.loopCardinality;
    }

    /**
     * Sets the value of the loopCardinality property.
     * @param value allowed object is
     * {@link TExpression }
     */
    @objid ("ced5eb24-c208-42d6-98d5-f072b225c76b")
    public void setLoopCardinality(TExpression value) {
        this.loopCardinality = value;
    }

    /**
     * Gets the value of the loopDataInputRef property.
     * @return
     * possible object is
     * {@link QName }
     */
    @objid ("2f6acaa8-c507-42a2-8705-360171a95cb2")
    public QName getLoopDataInputRef() {
        return this.loopDataInputRef;
    }

    /**
     * Sets the value of the loopDataInputRef property.
     * @param value allowed object is
     * {@link QName }
     */
    @objid ("2374e228-ea89-456a-a457-bb8e45fe56c6")
    public void setLoopDataInputRef(QName value) {
        this.loopDataInputRef = value;
    }

    /**
     * Gets the value of the loopDataOutputRef property.
     * @return
     * possible object is
     * {@link QName }
     */
    @objid ("5202e4f5-96a3-4a18-afb9-5057d2a361e3")
    public QName getLoopDataOutputRef() {
        return this.loopDataOutputRef;
    }

    /**
     * Sets the value of the loopDataOutputRef property.
     * @param value allowed object is
     * {@link QName }
     */
    @objid ("8132f421-153d-4e0a-ba62-9cc089ee37b1")
    public void setLoopDataOutputRef(QName value) {
        this.loopDataOutputRef = value;
    }

    /**
     * Gets the value of the inputDataItem property.
     * @return
     * possible object is
     * {@link TDataInput }
     */
    @objid ("5f16acda-d785-4e2e-8548-ba37167a8909")
    public TDataInput getInputDataItem() {
        return this.inputDataItem;
    }

    /**
     * Sets the value of the inputDataItem property.
     * @param value allowed object is
     * {@link TDataInput }
     */
    @objid ("d96dd22d-b0b4-4f5e-8b17-b51fe471066f")
    public void setInputDataItem(TDataInput value) {
        this.inputDataItem = value;
    }

    /**
     * Gets the value of the outputDataItem property.
     * @return
     * possible object is
     * {@link TDataOutput }
     */
    @objid ("8e2c5a43-1818-49b1-ba89-ee6ef07f2c56")
    public TDataOutput getOutputDataItem() {
        return this.outputDataItem;
    }

    /**
     * Sets the value of the outputDataItem property.
     * @param value allowed object is
     * {@link TDataOutput }
     */
    @objid ("7ad27d2e-0f63-4640-9583-6d6d2eb89be3")
    public void setOutputDataItem(TDataOutput value) {
        this.outputDataItem = value;
    }

    /**
     * Gets the value of the complexBehaviorDefinition property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the complexBehaviorDefinition property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getComplexBehaviorDefinition().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TComplexBehaviorDefinition }
     */
    @objid ("034d1711-361a-42d9-978e-612c3657f378")
    public List<TComplexBehaviorDefinition> getComplexBehaviorDefinition() {
        if (this.complexBehaviorDefinition == null) {
            this.complexBehaviorDefinition = new ArrayList<>();
        }
        return this.complexBehaviorDefinition;
    }

    /**
     * Gets the value of the completionCondition property.
     * @return
     * possible object is
     * {@link TExpression }
     */
    @objid ("a969a379-b0b8-42a6-8247-5f9e087a3556")
    public TExpression getCompletionCondition() {
        return this.completionCondition;
    }

    /**
     * Sets the value of the completionCondition property.
     * @param value allowed object is
     * {@link TExpression }
     */
    @objid ("df5ff3f6-aeac-4f93-aec1-d990a9d1d9d6")
    public void setCompletionCondition(TExpression value) {
        this.completionCondition = value;
    }

    /**
     * Gets the value of the isSequential property.
     * @return
     * possible object is
     * {@link Boolean }
     */
    @objid ("a3c10bbd-c663-4c58-b022-35c63e2a1385")
    public boolean isIsSequential() {
        if (this.isSequential == null) {
            return false;
        } else {
            return this.isSequential;
        }
        
    }

    /**
     * Sets the value of the isSequential property.
     * @param value allowed object is
     * {@link Boolean }
     */
    @objid ("8ea46008-f08f-48ae-bcd3-5a8a4c1bdf5a")
    public void setIsSequential(Boolean value) {
        this.isSequential = value;
    }

    /**
     * Gets the value of the behavior property.
     * @return
     * possible object is
     * {@link TMultiInstanceFlowCondition }
     */
    @objid ("c40b289b-e565-4f26-9717-cbcbbb657591")
    public TMultiInstanceFlowCondition getBehavior() {
        if (this.behavior == null) {
            return TMultiInstanceFlowCondition.ALL;
        } else {
            return this.behavior;
        }
        
    }

    /**
     * Sets the value of the behavior property.
     * @param value allowed object is
     * {@link TMultiInstanceFlowCondition }
     */
    @objid ("96de8220-7a5a-4487-845c-333c469f51e5")
    public void setBehavior(TMultiInstanceFlowCondition value) {
        this.behavior = value;
    }

    /**
     * Gets the value of the oneBehaviorEventRef property.
     * @return
     * possible object is
     * {@link QName }
     */
    @objid ("cd853611-171b-466f-816a-1d727edabd86")
    public QName getOneBehaviorEventRef() {
        return this.oneBehaviorEventRef;
    }

    /**
     * Sets the value of the oneBehaviorEventRef property.
     * @param value allowed object is
     * {@link QName }
     */
    @objid ("d5a9d9cc-7de4-4fe7-95c7-6ea646f08acd")
    public void setOneBehaviorEventRef(QName value) {
        this.oneBehaviorEventRef = value;
    }

    /**
     * Gets the value of the noneBehaviorEventRef property.
     * @return
     * possible object is
     * {@link QName }
     */
    @objid ("b220a70f-24ec-487d-94b1-131bcc7f0993")
    public QName getNoneBehaviorEventRef() {
        return this.noneBehaviorEventRef;
    }

    /**
     * Sets the value of the noneBehaviorEventRef property.
     * @param value allowed object is
     * {@link QName }
     */
    @objid ("1d3334b4-90fb-4d62-a148-f8eafeb37e94")
    public void setNoneBehaviorEventRef(QName value) {
        this.noneBehaviorEventRef = value;
    }

}
